//
// Copyright (c) 2024 BPer
//
#ifndef SRC_BPERRTC_BPERPUSHH_H_
#define SRC_BPERRTC_BPERPUSHH_H_
#include <bperrtc/BPerRtcContext.h>

#include <bperrtp/BPerRtp.h>
#include <bperrtp/BPerRtpBuffer.h>
#include <bperrtp/BPerRtpPacket.h>
#include <bperrtp/BPerRtpRawPayload.h>
#include <bperrtp/BPerRtpSTAPPayload.h>
#include <bperrtp/BPerRtpFUAPayload2.h>

typedef struct {
	uint16_t audioSeq;
	uint32_t audioSsrc;
	char* audioBuffer;
	BPerRtpBuffer *audioRtpBuffer;
	BPerRtpRawData audioRawData;
    BPerBuffer buf;
	BPerRtpPacket audioRawPacket;
}BPerPushAudioRtp;

typedef struct {
	uint16_t videoSeq;
	uint16_t twccSeq;
	uint32_t videoSsrc;

	char* videoBuf;
	BPerRtpBuffer *videoRtpBuffer;
	BPerFua2H264Data videoFua2Data;
	BPerRtpRawData videoRawData;

	BPerRtpSTAPData stapData;
    BPerBuffer buf;
#if BPer_Enable_TWCC
    BPerRtpExtensions rtpExtension;
#endif
	BPerRtpPacket videoFuaPacket;
	BPerRtpPacket videoRawPacket;
	BPerRtpPacket videoStapPacket;

}BPerPushH264Rtp;

typedef struct {
	uint16_t videoSeq;
	uint16_t twccSeq;
	uint32_t videoSsrc;

	char* videoBuf;
	BPerRtpBuffer *videoRtpBuffer;

	BPerFua2H265Data videoFua2Data;
	BPerRtpRawData videoRawData;
	BPerRtpSTAPData stapData;
	BPerBuffer buf;
#if BPer_Enable_TWCC
	BPerRtpExtensions rtpExtension;
#endif
	BPerRtpPacket videoFuaPacket;
	BPerRtpPacket videoRawPacket;
	BPerRtpPacket videoStapPacket;
}BPerPushH265Rtp;


typedef struct {
	uint16_t videoSeq;
	uint16_t twccSeq;
	uint32_t videoSsrc;

	char* videoBuf;
	BPerRtpBuffer *videoRtpBuffer;
	BPerFua2H264Data videoFua2Data;
	BPerRtpRawData videoRawData;

	BPerRtpSTAPData stapData;
    BPerBuffer buf;
#if BPer_Enable_TWCC
    BPerRtpExtensions rtpExtension;
#endif
	BPerRtpPacket videoFuaPacket;
	BPerRtpPacket videoRawPacket;
	BPerRtpPacket videoStapPacket;

}BPerPushAV1Rtp;

typedef struct {
	uint16_t videoSeq;
	uint16_t twccSeq;
	uint32_t videoSsrc;
	char* videoBuf;
	BPerRtpBuffer *videoRtpBuffer;

	BPerFua2H264Data videoFua2Data;
	BPerRtpRawData videoRawData;

    BPerBuffer buf;
#if BPer_Enable_TWCC
    BPerRtpExtensions rtpExtension;
#endif
	BPerRtpPacket videoFuaPacket;
	BPerRtpPacket videoRawPacket;

}BPerPushMjpegRtp;


#endif /* SRC_BPERRTC_BPERPUSHH_H_ */
